var express = require('express');
var router = express.Router();
//导入 moment
const moment = require('moment');
const AccountModel = require('../../models/AccountModel');
const checkTokenMiddleware=require('../../middlewares/checkTokenMiddleware')

//测试
// console.log(moment('2023-02-24').toDate())
//格式化日期对象
// console.log(moment(new Date()).format('YYYY-MM-DD'));

//记账本的列表
router.get('/account', checkTokenMiddleware,function(req, res, next) {
  //获取所有的账单信息
  // let accounts = db.get('accounts').value();
  //读取集合信息
  AccountModel.find().sort({time: -1}).exec((err, data) => {
    if(err){
      res.json({
        code:'1001',
        msg:'读取失败',
        data:null
      })
      return;
    }
    //响应成功的提示
    res.json({
      code:'0000',
      msg:'读取成功',
      data:data
    })
  })
});

//添加记录
router.get('/account/create',checkTokenMiddleware, function(req, res, next) {
  res.render('create');
});

//新增记录
router.post('/account', checkTokenMiddleware,(req, res) => {
  //插入数据库
  AccountModel.create({
    ...req.body,
    //修改 time 属性的值
    time: moment(req.body.time).toDate()
  }, (err, data) => {
    if(err){
      res.json({
        code:'1002',
        msg:'插入失败',
        data:null,
      })
      return;
    }
    //成功提醒
    res.json({
      code:'0000',
      msg:'插入成功',
      data:data
    })
  })
});

//删除记录
router.delete('/account/:id', checkTokenMiddleware,(req, res) => {
  //获取 params 的 id 参数
  let id = req.params.id;
  //删除
  AccountModel.deleteOne({_id: id}, (err, data) => {
    if(err) {
      res.json({
        code:'1003',
        msg:'删除失败',
        data:null
      })
      return;
    }
    //提醒
    res.json({
      code:'0000',
      msg:'删除成功',
      data:{}
    })
  })
});

//获取单个账单信息
router.get('/account/:id',checkTokenMiddleware,(req,res)=>{
  const {id}=req.params
  AccountModel.findById(id,(err,data)=>{
    if(err){
      res.json({
        code:'1004',
        msg:'查询失败',
        data:null
      })
      return;
    }  
    res.json({
      code:'0000',
      msg:'查询成功',
      data:data
    })

  })
  
})

//更新账单
router.patch('/account/:id',checkTokenMiddleware, async (req, res) => {
  const { id } = req.params;
  try {
      // 获取请求体中的更新数据
      const updateData = req.body;

      // 使用 updateOne 方法更新文档
      await AccountModel.updateOne({ _id: id }, updateData);

      // 查询更新后的文档
      const updatedData = await AccountModel.findById(id);

      return res.json({
          code: '0000',
          msg: '更新成功',
          data: updatedData
      });
  } catch (error) {
      return res.json({
          code: '1005',
          msg: '更新失败',
          data: null
      });
  }
});
module.exports = router;
